#include "XVideoWidget.h"
#include<qpainter>


XVideoWidget::XVideoWidget(QWidget *p) :QOpenGLWidget(p)
{

}


void XVideoWidget::paintEvent(QPaintEvent * e)
{
	QPainter painter;
	painter.begin(this);
	painter.drawImage(QPoint(0,0),img);
	painter.end();

}
//接收 XVideoThread 发送的读取的视频mat 数据
void XVideoWidget::setImage(Mat mat) {
	if (img.isNull())
	{
		//定义缓存区大小  glWidget宽高 RGB 3字节
		uchar * buf = new uchar[width()*height() *3];
		img = QImage(buf, width(), height(), QImage::Format_RGB888);
	

	}
	Mat des;
	//将图像缩放到glwidget 尺寸大小
	cv::resize(mat, des, Size(img.size().width(), img.size().height()));
	//cv::resize(mat,des,Size(img.size().width(),img.size().height()));
	//将缩放后的数据写入Qimg的buf中
	cv::cvtColor(des,des,COLOR_BGR2RGB);
	memcpy(img.bits(), des.data, des.cols*des.rows*des.elemSize());
	//memcpy(img.bits(), mat.data, mat.cols*mat.rows*mat.elemSize());
	update();//会触发paintEvent()重绘
}
XVideoWidget::~XVideoWidget()
{
}
